package com.example.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;
//数据库帮助类  可以获得数据库并初始化数据库
public class MyDataBaseOpenHelper extends SQLiteOpenHelper {
    /*Context 上下文
    * name 数据库文件名称
    * factory 默认游标工厂 ,从数据库文件的头部开始的
    * version 数据库的版本号   最小是1;
    * public MyDataBaseOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, "test.db", null, 1);
    }
    *
    * */
    public MyDataBaseOpenHelper(@Nullable Context context) {
        super(context, "test.db", null, 3);
    }


    /**
     * 当数据库第一次被创建的时候调用的方法,
     *  一般这个方法里面初始化数据的表结构
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        System.out.println("第一次运行创建数据库1");
        String sql = "create table student (_id integer primary key autoincrement ,name varchar(20) ,phone varchar(30) )";
        db.execSQL(sql);
        //创建一个学生数据表 包含学生id  学生姓名  学生电话号码
        System.out.println("第一次运行创建数据库2");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if(oldVersion==1 && newVersion == 2) {
            System.out.println("更新表1-2");
            String sql = "alter table student add account varchar(20)";
            db.execSQL(sql);
        }else if(oldVersion==2 && newVersion == 3) {
            System.out.println("更新表2-3");
            String sql = "alter table student add sex varchar(6)";
            db.execSQL(sql);
        }else{
            System.out.println("更新表1-3");
            String sql1 = "alter table student add account varchar(20)";
            String sql2 = "alter table student add sex varchar(6)";
            db.execSQL(sql1);
            db.execSQL(sql2);
        }
    }
}
